#ifndef TEXT_PRIVATE_H
#define TEXT_PRIVATE_H
#include <qmap.h>
#include <qobject.h>
#include <osgWidget/Box.h>
#include "Text.h"
#include "script/ScriptHelper.h"

class TextPrivate : public QObject,public Text,public ScriptHelper
{
public:
	TextPrivate(QObject* parent = nullptr);
	~TextPrivate();
public:
	QString getModule()const { return "Text"; }
public:
	void initial();

	void setDefaultFont(const QString& font)
	{
		defaultFont = font;
	}

	bool setDefaultFont(const QStringList& argument,QString* error = nullptr);

	QString getDefaultFont()const
	{
		return defaultFont;
	}

	void setDefaultTextSize(double size)
	{
		defaultTextSize = size;
	}

	bool setDefaultTextSize(const QStringList& argument,QString* error = nullptr);

	double getDefaultTextSize()const
	{
		return defaultTextSize;
	}

	void setDefaultTextColor(const QString& color)
	{
		defaultTextColor = color;
		if(!QColor::isValidColor(defaultFont))
			defaultTextColor = "white";
	}

	bool setDefaultTextColor(const QStringList& argument,QString* error = nullptr);

	QString getDefaultTextColor() const
	{
		return defaultTextColor;
	}

	void setDefaultTextBackgroundColor(const QString& color)
	{
		defaultTextBackgroundColor = color;
		if(!QColor::isValidColor(defaultTextBackgroundColor))
			defaultTextBackgroundColor = "#ffffff00";
	}

	void clear();

	bool setDefaultTextBackgroundColor(const QStringList& argument,QString* error = nullptr);
	
	QString getDefaultTextBackgroundColor() const
	{
		return defaultTextBackgroundColor;
	}

	void drawText(const QString& text,int x,int y,const QString& color = "",const QString& background = "",const QString& font = "",int fontSize = 12);
	void removeText(int x,int y);
public:
	bool drawText(const QStringList& argument,QString* error = nullptr);
	bool removeText(const QStringList& argument,QString* error = nullptr);
 
	bool printText(const QStringList& argument,QString* error = nullptr);

	bool clear(const QStringList& argument,QString* error = nullptr);
private:
	QStringList fontList;
	QString defaultFont;
	double defaultTextSize = 12.0;
	QString defaultTextColor,defaultTextBackgroundColor;
	QMap<quint32,QPair<osg::Geode*,osgText::Text*>> textWriter;
};

#endif